// index.js
// 后端配置
import {
  BasicUrl,
  request
} from "../../api/config.js"
Page({
  data: {
    //   轮播图图片
    swiperList: [],
    // 显示遮罩层推荐图片
    showRecommended: false,
    // 底部推荐图片
    recommendedList: [],
    // 遮罩层推荐图片
    wrapperList: [],
    hasLogin: false,
    // 查看门店信息
    isShowStoreInfo: false,
    store_info: {},
    baseUrl: ''
  },
  // 事件处理函数
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad() {
    wx.showLoading({
      title: '加载中...',
    })
    // 存一个标识代表已经生成订单
    wx.setStorageSync('createOrder', true)
    // 获取首页图片
    this.getHomeImgs()
    this.setData({
      baseUrl: BasicUrl
    })
    // 获取当前定位地址存入缓存
    if (!wx.getStorageSync('location')) {
      this.getCurrAdd()
    }

    // 判断是否有登录
    // 先看看有没有token
    var token = wx.getStorageSync('token')
    // console.log(token);
    if (token) {
      this.check_token(token)
    }
    // 判断本地存储是否有商家信息
    if (!wx.getStorageSync('store_info')) {
      this.getStoreInfo()
    } else {
      this.setData({
        store_info: JSON.parse(wx.getStorageSync('store_info'))
      })
    }
    wx.hideLoading()
  },
  // 获取首页轮播图图片
  async getHomeImgs() {
    await request('/api/home/get_home_imgs', 'GET', {}, false).then(({
      data
    }) => {
      console.log(data);
      if (data.code == 200) {
        this.setData({
          wrapperList: data.data.wrapper,
          swiperList: data.data.swiper,
          recommendedList: data.data.recommended
        })
      } else {
        wx.showToast({
          title: '获取图片失败',
          icon: 'error'
        })
      }
    })

  },
  // 获取当前定位
  getCurrAdd() {
    wx.getLocation({
      altitude: true,
      isHighAccuracy: true,
      // type: 'gcj02',
      success: (res) => {
        console.log(res);
        let location = {
          longitude: res.longitude,
          latitude: res.latitude
        }
        wx.setStorageSync('location', location)
        // this.setData({
        //   currAdd: res.longitude + ',' + res.latitude
        // })
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    this.setData({
      showRecommended: true
    })
  },

  // 获取商家信息并存入本地缓存
  async getStoreInfo() {
    let user_id = wx.getStorageSync('user_info') ? JSON.parse(wx.getStorageSync('user_info')).user_id : ''
    console.log('user_id', wx.getStorageSync('user_info'));
    await request('/api/store/get_store_info', "POST", {
      store_id: 1,
      user_id
    }, false).then(({
      data
    }) => {
      console.log(data);
      if (data.code == 200) {
        data.data.store_imgs = data.data.store_imgs.split(',')
        wx.setStorageSync('store_info', JSON.stringify(data.data))
        this.setData({
          store_info: data.data
        })
      } else {
        wx.showToast({
          title: '获取商家信息失败',
          icon: 'error'
        })
        console.log("获取商家信息失败");
      }
    })
  },
  // 外卖配送
  toTakeOut() {
    wx.showToast({
      title: '敬请期待',
      icon: "none"
    })
  },
  // 关闭遮罩层推荐图片
  closeWeapper() {
    this.setData({
      showRecommended: false
    })
  },
  // 获取用户信息
  get_user_info() {
    request('/api/user/wx_get_user_info', 'post', {}, true).then(({
      data
    }) => {
      console.log(data);
      if (data.code == 200) {
        // // 用户信息页存入缓存
        wx.setStorageSync('user_info', JSON.stringify(data.data))
        this.getStoreInfo()
      } else {
        wx.showToast({
          title: '获取用户信息失败',
        })
      }
    })
  },
  // 登录
  login() {
    wx.showLoading({
      title: '正在登录',
    })
    wx.login({
      success: (res) => {
        console.log("code: " + res.code);
        if (res.code) {
          request('/api/login/wx_login', 'POST', {
            code: res.code
          }, false).then((res) => {
            console.log("token=", res.data);
            if (res.data.token) {
              // 将token保存在数据缓存中（下次无需重新获取token）
              wx.setStorageSync('token', res.data.token)
              // 获取用户信息
              this.get_user_info()
              wx.hideLoading()
              wx.showToast({
                title: '登录成功',
                icon: 'success'
              })
              this.setData({
                hasLogin: true
              })

            } else {
              wx.hideLoading()
              wx.showToast({
                title: '登录失败',
                icon: 'error'
              })
              this.setData({
                hasLogin: false
              })
            }
          })
        } else {
          console.log(res.errMsg);
          wx.showToast({
            title: '登录失败',
            icon: 'error'
          })
          wx.hideLoading()
          this.setData({
            hasLogin: false
          })
        }
      }
    })
  },
  // 请求校验登录接口
  async check_token(token) {
    // 请求后端接口校验该token是否有效
    await request('/api/login/wx_check_token', 'post', {
      token
    }, false).then(({
      data
    }) => {
      console.log(data);
      // 如果无效则去除本地token 重新请求login
      if (!data.check_result) {
        wx.removeStorageSync('token')
        wx.showToast({
          title: '登录信息过期',
          icon: 'error'
        })
        wx.removeStorageSync('token')
        wx.removeStorageSync('user_info')
        this.setData({
          hasLogin: false
        })
      } else {
        // 否者登录成功获取个人信息
        this.setData({
          hasLogin: true
        })
      }
    })
  },
  // 查看商家公告信息
  showStoreInfo() {
    this.setData({
      isShowStoreInfo: true
    })
  },
  // 关闭公告
  closeAnnouncement() {
    this.setData({
      isShowStoreInfo: false
    })
  },
  // 一键导航
  nav_store(e) {
    console.log(e.currentTarget.dataset);
    // 纬度 latitude
    // 经度 longitude
    let {
      latitude,
      longitude,
      store_address,
      store_name
    } = e.currentTarget.dataset
    // 根据经纬度获取定位
    wx.openLocation({
      latitude: latitude * 1,
      longitude: longitude * 1,
      name: store_name,
      address: store_address
    })
  },
  // 联系电话
  showPhone(e) {
    let phone = e.currentTarget.dataset.phone
    console.log(e.currentTarget.dataset.phone);
    wx.makePhoneCall({
      phoneNumber: phone,
      success: (res) => {
        console.log(res);
      }
    })
  },
  cancelContacNumber() {
    this.setData({
      show1: false
    });
  },
  toMeal(e) {
    let idx = e.currentTarget.dataset.idx

    wx.switchTab({
      url: '/pages/meal/index'
    })
  },
  toMine() {
    wx.switchTab({
      url: '/pages/mine/index'
    })
  },
  onShow() {
    this.getTabBar().setData({
      active: 0
    })
    let hasLogin = wx.getStorageSync('token')
    if (hasLogin) {
      this.setData({
        hasLogin: true
      })
    }
  }
})